package telas.controleAcesso;

import java.util.ArrayList;
import java.util.List;
import business.controleacesso.Perfil;
import business.controleacesso.UserNet;
import business.cotacao.Cliente;
import business.dados.Persistente;
import business.sistema.ExceptionSistema;
import business.sistema.IObjetoSistema;

public class TelaUsuarioCadastro
{
	private UserNet usuario;
	
	private List<IObjetoSistema> clientes = new ArrayList<IObjetoSistema>();
	private String nomeClientePesquisa = "";
	
	private List<IObjetoSistema> perfis = new ArrayList<IObjetoSistema>();
	private String nomePerfilPesquisa = "";

	public void setUsuario(UserNet usuario)
	{
		this.usuario = usuario;
	}

	public UserNet getUsuario()
	{
		return usuario;
	}
	
	// ############################################# 
	//  MÉTODOS DE INTERFACE PARA IMPLEMENTAR A BUSCA POR UMA CLIENTE
	// #############################################	
	
	public void setClienteSelecionado(Cliente clienteSelecionado)
	{
		usuario.setCliente(clienteSelecionado);
	}

	public Cliente getClienteSelecionado()
	{
		return usuario.getCliente();
	}
	
	public void setClientes(List<IObjetoSistema> clientes)
	{
		this.clientes = clientes;
	}

	public List<IObjetoSistema> getClientes()
	{
		return clientes;
	}
	
	public void setNomeClientePesquisa(String nomeClientePesquisa)
	{
		this.nomeClientePesquisa = nomeClientePesquisa;
	}

	public String getNomeClientePesquisa()
	{
		return nomeClientePesquisa;
	}
	
	public String pesquisarCliente() 
	{
		try
		{
			setClientes(Persistente.getInstance().getCollection(Cliente.class, filtroCliente()));
		}
		catch(Exception ex)
		{
			new ExceptionSistema(ex);
		}
		
		return null;
	}
	
	public String filtroCliente()
	{
		StringBuilder filtro = new StringBuilder(" 1 = 1");
		
		filtro.append(" AND this_.nome LIKE '%" + nomeClientePesquisa + "%' ");
		
		filtro.append(" ORDER BY this_.nome ");
		
		return filtro.toString();
	}
	
	// ############################################# 
	// FIM - PESQUISA CLIENTE
	// #############################################
	
	
	// ############################################# 
	//  MÉTODOS DE INTERFACE PARA IMPLEMENTAR A BUSCA POR UMA CLIENTE
	// #############################################	
	
	public void setPerfilSelecionado(Perfil perfilSelecionado)
	{
		usuario.setPerfil(perfilSelecionado);
	}

	public Perfil getPerfilSelecionado()
	{
		return usuario.getPerfil();
	}
	
	public void setPerfis(List<IObjetoSistema> perfis)
	{
		this.perfis = perfis;
	}

	public List<IObjetoSistema> getPerfis()
	{
		return perfis;
	}
	
	public void setNomePerfilPesquisa(String nomePerfilPesquisa)
	{
		this.nomePerfilPesquisa = nomePerfilPesquisa;
	}

	public String getNomePerfilPesquisa()
	{
		return nomePerfilPesquisa;
	}
	
	public String pesquisarPerfil() 
	{
		try
		{
			setPerfis(Persistente.getInstance().getCollection(Perfil.class, filtroPerfil()));
		}
		catch(Exception ex)
		{
			new ExceptionSistema(ex);
		}
		
		return null;
	}
	
	public String filtroPerfil()
	{
		StringBuilder filtro = new StringBuilder(" 1 = 1");
		
		filtro.append(" AND this_.nome LIKE '%" + nomePerfilPesquisa + "%' ");
		
		filtro.append(" ORDER BY this_.nome ");
		
		return filtro.toString();
	}
	
	// ############################################# 
	// FIM - PESQUISA CLIENTE
	// #############################################
	
	public String salvar()
	{
		try
		{
			usuario.salvarWEB();
		}
		catch(Exception ex)
		{
			new ExceptionSistema(ex);
		}
		
		return "telaUsuario";
	}
	
	public String cancelar()
	{
		
		try
		{
			usuario.desfazerModificacao();
		}
		catch (Exception ex) 
		{
			new ExceptionSistema(ex);
		}
		
		return "telaUsuario";
	}
	
	public String novo()
	{
		this.usuario = new UserNet();
		
		return "telaUsuarioCadastro";
	}
}
